package contapassi.prova2;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;

//import com.android.DB.MyDatabase;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

public class ListaAllenamentiView extends Activity {
    
	private ListView listaAllenamenti;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);    
        
        
        boolean possoLeggereStorageEsterno = false;
        boolean possoScrivereStorageEsterno = false;
        String state = Environment.getExternalStorageState();
        if (Environment.MEDIA_MOUNTED.equals(state)) {
        // Storage esterno disponibile in lettura e scrittura.
        possoLeggereStorageEsterno = possoScrivereStorageEsterno = true;
        } else if (Environment.MEDIA_MOUNTED_READ_ONLY.
        equals(state)) {
        // Storage esterno disponibile solo in lettura.
        possoLeggereStorageEsterno = true;
        possoScrivereStorageEsterno = false;
        } else {
        // Storage esterno non disponibile.
        possoLeggereStorageEsterno = possoScrivereStorageEsterno = false;
        }
        System.out.println("Lettura: " + possoLeggereStorageEsterno + " - Scrittura: " + possoScrivereStorageEsterno);
        File currentDirectory = Environment.getExternalStorageDirectory();
        System.out.println("La sdcard � al path: " + currentDirectory.getAbsolutePath());

        
        listaAllenamenti = (ListView) findViewById(R.id.allenamentiListView);
                
        creaAdapter();
	}
    
    
    
    @Override
    // appena torno a questa activity dopo che ho importato il nuovo json nel db devo riaggiornare la view
    public void onStart()
    {
    	super.onStart();
    	creaAdapter();
    }
    
    
    
    
    
    private void creaAdapter()
	{

    	// creo una lista di allenamenti fittizi
        ListaAllenamentiManager lam = new ListaAllenamentiManager();
        
        
        //for(int i=0;i<10;i++)
        //{
        	//leggo da database gli allenamenti sotto forma di stringhe
        	MyDatabase db=new MyDatabase(getApplicationContext());
        	
        	//try{
				
				//db.createDataBase();
			//}catch(IOException e){
				
			//}
        	db.open();
     	    Cursor c=db.fetchProducts();
        	while(c.moveToNext()){
//        		
//        		//converto da json  a oggetti allenamento 
            	long id= c.getLong(0);
            	String all = c.getString(1);
            	System.out.println(all);
            	JsonToClass JC =new JsonToClass(all);
//            	Allenamento a = new Allenamento();
//            	
            	Allenamento a=JC.getAllenamento();
//            	// creo la lista allenamenti
            	lam.addAllenamento(a);
//        		
//        		
        	}
       	db.close();
//        	
        	//a.SettaAllenamentoProva(lam);
        	
        //}
        for(int i=0;i<10;i++)
        {
        	//lam.getAllenamentoIndex(i).StampaAllenamento();
        }
		
		//Questa � la lista che rappresenta la sorgente dei dati della listview
        //ogni elemento � una mappa(chiave->valore)
        final ArrayList<HashMap<String, Object>> data=new ArrayList<HashMap<String,Object>>();
       
       
        HashMap<String,Object> itemImporta=new HashMap<String, Object>();//creiamo una mappa di valori
        itemImporta.put("ID", "");
        itemImporta.put("nome", "IMPORTA");
        itemImporta.put("data", "");
        data.add(itemImporta);
        
        HashMap<String,Object> itemEsci=new HashMap<String, Object>();//creiamo una mappa di valori
        itemEsci.put("ID", "");
        itemEsci.put("nome", "ESCI");
        itemEsci.put("data", "");
        data.add(itemEsci);
        
        
        for(int i=0;i<lam.getSize();i++){
        	
                Allenamento a=lam.getAllenamentoIndex(i);// per ogni persona all'inteno della ditta
               
                HashMap<String,Object> allenamentoMap=new HashMap<String, Object>();//creiamo una mappa di valori
               
            
            	allenamentoMap.put("ID", a.getID()); // per la chiave image, inseriamo la risorsa dell immagine
            	allenamentoMap.put("nome", a.getNome()); // per la chiave name,l'informazine sul nome
            	allenamentoMap.put("data", a.getData().get(Calendar.DAY_OF_MONTH) + "/" + a.getData().get(Calendar.MONTH) + "/" + a.getData().get(Calendar.YEAR) + " - " + a.getData().get(Calendar.HOUR) + ":" + a.getData().get(Calendar.MINUTE));// per la chiave surnaname, l'informazione sul cognome
                data.add(allenamentoMap);  //aggiungiamo la mappa di valori alla sorgente dati
        }
        
        String[] from={"ID","nome","data"}; //dai valori contenuti in queste chiavi
        int[] to={R.id.allenamentoID,R.id.allenamentoNome,R.id.allenamentoData};//agli id delle view
       
        //costruzione dell adapter
        SimpleAdapter adapter=new SimpleAdapter(
                        getApplicationContext(),
                        data,//sorgente dati
                        R.layout.lista_allenamenti, //layout contenente gli id di "to"
                        from,
                        to);

        //utilizzo dell'adapter
        listaAllenamenti.setAdapter(adapter);
        
        listaAllenamenti.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        	@Override
	        public void onItemClick(AdapterView parent, View v,int position, long id) 
        	{
        		HashMap<String, Object> d = data.get(position);
        		if(d.get("ID").equals("") && d.get("nome").equals("IMPORTA") && d.get("data").equals(""))
        		{
        			Intent i = new Intent(parent.getContext(), ImportaView.class);
            		startActivity(i);
        		}
        		if(d.get("ID").equals("") && d.get("nome").equals("ESCI") && d.get("data").equals(""))
        		{
        			// tornare all'activity iniziale
        			finish();
        		}
        		
    			Toast.makeText(getBaseContext(), "Scelto allenamento " + d.get("nome") ,Toast.LENGTH_SHORT).show();

	        }
        });

    }
}
